Socket programming

소켓 프로그래밍(Socket programming)
컴퓨터 네트워크에서 소켓은 통시늘 위한 ‘종착지’와 같은 역할을 수행한다.
두 개의 컴퓨터가 통신을 수행할 때, 각 컴퓨터의 소켓을 통해 데이터를 교환한다.
소켓 프로그래밍은 크게 TCP, UDP 방식이 있다.

TCP(Transmission Control Protocol)
연결형 프로토콜이다. UDP에 비해서 속도가 느리지만 신뢰성 있는 데이터의 송수신을 보장
인터넷에서 데이터를 주고 받을 때는 경로 설정을 효과적으로 수행하기 위해서 데이터를 여러 개의 패킷(Packet)으로
나누어서 송수신한다.


UDP(User Datagram Protocol)
비연결형 프로토콜. TCP에 비해서 통신의 신뢰성이 부족하지만, 빠른 데이터 송수신이 가능하다.
데이터를 주고 받기 전에 사전 통신 절차를 거치지 않음
필 드크 기내 용
송신자의 포트 번호16데이터를 보내는 애플리케이션의 포트 번호
수신자의 포트 번호16데이터를 받을 애플리케이션의 포트 번호
데이터의 길이16UDP 헤더와 데이터의 총 길이
체크섬(Checksum)16데이터 오류 검사에 사용
TCP/IP 4계층
TCP/IP 4계층(TCP/IP 4 Layer)
응용계층 사이에서 소켓(Socket)을 이용
서버 & 클라이언트 구조
가장 대표적인 네트워크 구성 모델이다
일반적으로 웹 서비스를 이용할 때 웹 브라우저는 [클라이언트]에 해당하며 웹 서버는 [서버]에 해당한다.
모든 데이터의 관리 및 처리가 [서버]에 집중된다는 특징이 있다.
소켓 프로그래밍

포트
특정한 프로그램이 통신을 하기 위해서는 포트(Port) 번호를 할당해야 한다.
포트 번호는 16비트로 65,536개를 사용할 수 있다.
1번부터 1024번 포트는 시스템 포트로 사용된다.
따라서 특정한 서버 프로그램을 만들었다면 해당 서버 프로그램이 사용될 포트 번호를 1025번 이상으로 선택
하여 미리 설정하여야 한다.
ftp://000.000.000.000:21
포트 설정
서버 & 클라이언트 구조의 시스템을 구축할 때 서버 프로그램의 포트 번호는 명시적으로 할당해야 한다.
클라이언트 프로그램은 서버의 IP 주소와 포트 번호를 모두 알고 있어야 한다.

서버와 클라이언트 연결이 수립되면 클라이언트 컴퓨터에서는 사용중이지 않은 임의의 포트가 할당